// pages/detail/detail.js
const APIKEY = "071597b90ac24b8f8808f5400e8b8309"; // KEY
Page({

  /**
   * 页面的初始数据
   */
  data: {
    date: '', // 日期
    location: '', // 地址
    weatherDetail: {}, // 获取之后的接口天气信息
    City: '', // 省份
    County: '', // 区域
    DateDetail: '',  // 日期
    WeekDetail: '',   // 星期

    recommendations: [
      {
        thumbnail: '../../images/晴天.jpg',
        title: '晴天：阳光普照，天空清澈',
        description: '晴天是指没有云层遮挡，阳光直接照射到地面的天气状况，是人们户外活动和旅行的理想天气。'
      },
      {
        thumbnail: '../../images/冰雹.jpg',
        title: '冰雹：骤然降下的冰块',
        description: '冰雹是从雷暴云中降落的冰块，通常在强对流天气下发生，可能对农作物和建筑物造成损害。'
      },
      {
        thumbnail: '../../images/多云.jpg',
        title: '多云：天空云层密布',
        description: '多云指天空中有大量云层覆盖，但间歇性阳光仍可能穿透云层，光线较为柔和。'
      },
      {
        thumbnail: '../../images/刮风.jpg',
        title: '刮风：空气的流动之舞',
        description: '刮风是空气的大规模水平运动，风速和方向的变化会影响天气状况和体感温度。'
      },
      {
        thumbnail: '../../images/雷雨.jpg',
        title: '雷雨：雷声轰鸣伴随雨幕',
        description: '雷雨是伴有闪电和雷声的降雨天气，常在夏季发生，可能带来短时强降雨和大风。'
      },
      {
        thumbnail: '../../images/下雨.jpg',
        title: '下雨：云中洒落的水珠',
        description: '下雨是云层中的水滴凝结并降落到地面的过程，雨量和雨强的变化会影响日常活动和交通。'
      },
      {
        thumbnail: '../../images/下雪.jpg',
        title: '下雪：天际飘落的白色精灵',
        description: '下雪是指水汽在低温条件下凝结成雪花降落到地面，常见于寒冷季节，形成美丽的冬日景象。'
      },
      {
        thumbnail: '../../images/阴天.jpg',
        title: '阴天：云层笼罩的昏暗天色',
        description: '阴天指天空被厚重的云层覆盖，阳光无法穿透，整体光线较为昏暗，常伴随较低的能见度。'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      // 获取数据
      date: options.date,
      location: options.location
    });
    this.getWeatherDetail(options.date, options.location);
    this.getCityByLoaction(); // 确保调用此方法
  },

  getWeatherDetail: function (date, location) {
    console.log(date);
    console.log(location);
    var that = this;
    wx.showLoading({
      title: '加载中',
    });
    wx.request({
      url: 'https://devapi.qweather.com/v7/weather/7d?key=' + APIKEY + "&location=" + location,
      success(result) {
        var res = result.data;
        // 格式化每个日期项以匹配第一个接口的格式
        res.daily.forEach(function (item) {
          item.formattedDate = that.formatTime(new Date(item.fxDate)).daily; // 格式化为与前端相同的格式
        });
        const weatherDetail = res.daily.find(item => item.formattedDate === date);
        console.log(weatherDetail);
        if (weatherDetail) {
          that.setData({
            weatherDetail: weatherDetail
            
          });
        } else {
          wx.showToast({
            title: '未找到当天的天气信息',
            icon: 'none'
          });
        }
        wx.hideLoading();
      }
    });
  },

  /**
   * 根据坐标获取城市信息
   */
  getCityByLoaction() {
    var that = this
    wx.request({
      // 通过坐标向接口发送请求获取信息
      url: 'https://geoapi.qweather.com/v2/city/lookup?key=' + APIKEY + "&location=" + that.data.location,
      success(result) {
        var res = result.data;
        console.log(res);
        if (res.code == "200") {
          var data = res.location[0]
          console.log(data);
          that.setData({
            City: data.adm2,
            County: data.name
          })
        } else {
          wx.showToast({
            title: '获取城市信息失败',
            icon: 'none'
          })
        }
      }
    })
  },

  // 格式时间
  formatTime(date) {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
    const weekArray = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
    const isToday = date.setHours(0, 0, 0, 0) == new Date().setHours(0, 0, 0, 0)
    return {
      hourly: [hour, minute].map(this.formatNumber).join(":"),
      daily: [month, day].map(this.formatNumber).join("-"),
      dailyToString: isToday ? "今天" : weekArray[date.getDay()]
    }
  },
  // 补零 避免 单独一个数字情况
  formatNumber(n) {
    n = n.toString()
    return n[1] ? n : '0' + n
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})